package utils

import (
	"k8s-admin/global"
	"time"

	probing "github.com/prometheus-community/pro-bing"
)

/*

心跳检测函数，用于检测服务器的运行状态。
使用Ping命令检测服务器是否在线。如果服务器在线，则返回true；如果服务器不在线，则返回false。
存在问题：服务器可能存在禁ping命令的情况。

*/

func Check_Ping(host_ip string) bool {
	pinger, err := probing.NewPinger(host_ip)
	if err != nil {
		global.TPLogger.Error("Ping命令执行失败，原因：", err)
		return false
	} else {
		pinger.Count = 5                 // 发送5个Ping包。
		pinger.Timeout = 5 * time.Second // 超时时间设置为5秒。

		err = pinger.Run()
		if err != nil { // 如果Ping命令执行失败，则返回错误信息。
			global.TPLogger.Error("Ping命令启动失败，原因：", err)
			return false
		} else {
			stats := pinger.Statistics() // 运行Ping命令，并返回统计信息。
			if stats.PacketLoss == 0 {   // 如果丢包率为0，则认为服务器在线。
				// 服务器在线
				return true
			} else {
				// 服务器不在线
				return false
			}
		}

	}
}
